﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Abstract1
{
    class Program
    {
        static void Main(string[] args)
        {
            //2.使用抽象类结构实现游戏中NPC 模块
            //在游戏中会出现很多种不同用途的 NPC，这些 NPC 有各自的存在的价值和作用，
            //同时又具备一些共性的东西。在开发 NPC 系统的时候，往往是需要提取共性，
            //独立出一个父类，然后子类继承实现不同作用的 NPC。
            //分析：任务 NPC，商贩 NPC，铁匠 NPC，三种 NPC 的种类。
            //共有属性：npc 的名字，npc 的类型；
            //共有方法：都能和玩家交互(交谈)；
            Console.WriteLine("请选择你需要的NPC（任务or商贩or铁匠）");
            string chooes = Console.ReadLine();
            if (chooes == "任务")
            {
                Console.WriteLine("欢迎选择任务NPC，请选择相应功能的NPC（A.送信NPC B.杀怪NPC C.采集NPC）");
                string task = Console.ReadLine();
                switch (task)
                {
                    case "A":
                        TaskNPC taskNPC = new TaskNPC("任务","送信");
                        taskNPC.ChatWithPlayer();
                        break;
                    case "B":
                        TaskNPC taskNPC1 = new TaskNPC("任务", "杀怪");
                        taskNPC1.ChatWithPlayer();
                        break;
                    case "C":
                        TaskNPC taskNPC2 = new TaskNPC("任务", "采集");
                        taskNPC2.ChatWithPlayer();
                        break;
                    default:
                        Console.WriteLine("选择错误！请选择相应的NPC");
                        break;
                }
            }
            else if (chooes == "商贩")
            {
                Console.WriteLine("欢迎选择商贩NPC，请选择相应功能的NPC（A.武器NPC B.材料NPC C.食物NPC）");
                string business = Console.ReadLine();
                switch (business)
                {
                    case "A":
                        BusinessNPC businessNPC = new BusinessNPC("商贩", "武器");
                        businessNPC.ChatWithPlayer();
                        break;
                    case "B":
                        BusinessNPC businessNPC1 = new BusinessNPC("商贩", "材料");
                        businessNPC1.ChatWithPlayer();
                        break;
                    case "C":
                        BusinessNPC businessNPC2 = new BusinessNPC("商贩", "食物");
                        businessNPC2.ChatWithPlayer();
                        break;
                    default:
                        Console.WriteLine("选择错误！请选择相应的NPC");
                        break;
                }

            }
            else if (chooes == "铁匠")
            {
                Console.WriteLine("欢迎选择铁匠NPC，请选择相应功能的NPC（A.修补NPC B.强化NPC C.打造NPC）");
                string Iron = Console.ReadLine();
                switch (Iron)
                {
                    case "A":
                        IronNPC ironNPC = new IronNPC("铁匠","修补");
                        ironNPC.ChatWithPlayer();
                        break;
                    case "B":
                        IronNPC ironNPC1 = new IronNPC("铁匠", "强化");
                        ironNPC1.ChatWithPlayer();
                        break;
                    case "C":
                        IronNPC ironNPC2 = new IronNPC("铁匠", "打造");
                        ironNPC2.ChatWithPlayer();
                        break;
                    default:
                        Console.WriteLine("选择错误！请选择相应的NPC");
                        break;
                }
            }
            Console.ReadKey();
        }
    }
}
